package sun.superstring.operator;

public class OperatorDemo6 {
    public static void main(String[] args) {

        // 目标：掌握逻辑运算符的使用

        System.out.println(isMatch2(180, 70, 27, "男"));
        System.out.println(isMatch2(160, 70, 27, "女"));
        System.out.println(isMatch2(160, 70, 27, "女"));
        System.out.println("-------------------------");
        System.out.println(isMatch3(180, 1000));
        System.out.println(isMatch3(150, 10000000));
        System.out.println("-------------------------");
        isMatch4(true);
        System.out.println("-------------------------");
        isMatch5(true, true);
        isMatch5(true, false);
        isMatch5(false, true);
        isMatch5(false, false);

        System.out.println("-------------------------");
        System.out.println("-------------------------");
        print();

    }

    // 需求：判断某个人的条件是否满足择偶要求，如果满足返回true，否则返回false
    // 条件是：身高高于175 且体重在55-80之间 且 年龄小于28 性别为男
    // & 逻辑与
    public static boolean isMatch2(int height, int weight, int age, String sex) {
        boolean flag = false;
        if (height > 175 & weight >= 55 & weight <= 80 & age < 28 & sex.equals("男")) {
            flag = true;
        }
        return flag;
    }

    // 需求：找一个男朋友，要求要么身高高于180，要么收入高于30万
    // | 逻辑或
    public static boolean isMatch3(int height, int income) {
        boolean flag = false;
        if (height >= 180 | income > 300000) {
            flag = true;
        }
        return flag;
    }

    // ！ 非 ，你真我假，你假我真
    public static void isMatch4(boolean flag) {
        System.out.println(!flag);
    }

    // ^ 异或，相同条件为false，不同条件为true
    public static void isMatch5(boolean flag1, boolean flag2) {
        System.out.println(flag1 ^ flag2);
    }

    // 判断&& || 与 & | 的区别
    public static void print() {
        int a = 111;
        int b = 2;
//        System.out.println(a > 1000 && ++b > 1); // false   && 发现左边条件为false右边不执行
        System.out.println(a > 1000 & ++b > 1); // false    &  发现左边条件为false右边也执行
        System.out.println(b);

        int i = 10;
        int j = 20;
//        System.out.println(i > 6 || ++j > 1); // true     || 发现左边条件为true右边不执行
        System.out.println(i > 6 | ++j > 1); // true      |  发现左边条件为true右边也执行
        System.out.println(j);


    }


}
